<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 设置 年月日 时分秒 毫秒
    // 返回值: 设置的时间对应的毫秒数
    // 是否影响原日期对象: 影响

    // 如果不想影响原日期:  得到一个与原日期 时间相同的新日期

    // 影响原日期
    // var date = new Date();

    // var result = date.setFullYear(2050);
    // console.log("返回值", result);
    // console.log("原日期", date);

    // 1. 得到一个与原日期 时间相同的新日期  2.操作新日期
    // var date = new Date();
    // var d1 = new Date(date);
    // d1.setFullYear(2050);
    // console.log("新日期", d1);
    // console.log("原日期", date);

    var date = new Date();

    date.setFullYear(2050);
    date.setMonth(4);    //设置月份(参数范围:0-11)

    // 分开查看(不要一起解注释)
    date.setDate(1); // 2050-5-1
    // date.setDate(32); // 2050-5-32 => 2050-6-1
    // date.setDate(0); // 2050-5-0  => 2050-4-30 (本月的第0天就是上个月的最后一天)

    date.setHours(12);
    date.setMinutes(12);
    date.setSeconds(12);
    date.setMilliseconds(123);

    date.setTime(0); // 设置日期对象对应的毫秒数

    console.log(date);


    // 封装三个函数  date = new Date(); => 对象 => 引用类型
    // 1. 在不影响原日期对象的前提下,封装一个函数,传入一个日期对象 => 返回该月的第一天星期几(0->7)
    // var date = new Date();
    // getFirstDayWeek(date); // 1

    // 2. 在不影响原日期对象的前提下,封装一个函数,传入一个日期对象 => 返回上个月有多少天
    // var date = new Date();
    // getLastMonthDays(date); // 30


    // 3. 在不影响原日期对象的前提下,封装一个函数,传入一个日期对象 => 返回当前月有多少天
    // var date = new Date();
    // getThisMonthDays(date); // 31




</script>

</html>